v-bind vs v-model
작성일 : 2024.11.13
1. 데이터 흐름
v-bind
- 단방향 데이터 바인딩
- 컴포넌트/데이터 → 템플릿(화면) 방향으로만 동작
<input :value="message"> <!-- message가 변경되면 input 값이 변경됨 -->
<!-- 하지만 input 값을 변경해도 message는 변경되지 않음 -->
v-model
- 양방향 데이터 바인딩
- 컴포넌트/데이터 ↔ 템플릿(화면) 양쪽으로 동작
<input v-model="message"> <!-- message와 input 값이 서로 동기화됨 -->
2. 내부 동작 방식
v-model은 실제로 다음과 같은 v-bind와 v-on의 조합으로 동작합니다:
<!-- v-model의 내부 동작 -->
<input
v-model="message"
>
<!-- 위 코드는 다음과 동일 -->
<input
:value="message"
@input="message = $event.target.value"
>
3. 사용 예시와 차이점
<!-- v-bind 사용 예시 -->
<img :src="imageUrl"> <!-- 이미지 소스 바인딩 -->
<div :class="className"> <!-- 클래스 바인딩 -->
<button :disabled="isLoading"> <!-- 속성 바인딩 -->
<!-- v-model 사용 예시 -->
<input v-model="username"> <!-- 입력 필드 -->
<textarea v-model="content"> <!-- 텍스트 영역 -->
<select v-model="selected"> <!-- 선택 상자 -->